import { noop, isPromise } from "./basic.mjs";
// 拦截器 interceptor函数外部传入
// interceptor可以为普通函数 和 promise函数
function callInterceptor(interceptor, {
  args = [], // interceptor参数
  done, // 确认回调
  canceled, // 取消回调
  error // 失败回调
}) {
  if (interceptor) {
    // .apply第二个参数为数组
    const returnVal = interceptor.apply(null, args);
    if (isPromise(returnVal)) {
      returnVal.then((value) => {
        if (value) {
          done();
        } else if (canceled) {
          canceled();
        }
      }).catch(error || noop);
    } else if (returnVal) {
      done();
    } else if (canceled) {
      canceled();
    }
  } else {
    done();
  }
}
export {
  callInterceptor
};
